home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SOUND.SWG / 0043_SB Talk Unit.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-25  |  2KB  |  88 lines

  1. {
  2. > Hi! I have the following problem:
  3. > I'm trying to get my Sound Blaster card (version 1.0) to speak a string,
  4. > like the SAY.EXE program that comes with SB.
  5.  
  6. (Sorry for the german comments, but I'm to lazy to rewrite them ≡:-|) }
  7.  
  8. Program Talk;
  9. { by Mirko Holzer; 16.2.1994 }
  10.  
  11. Uses
  12.   Crt,
  13.   Dos,
  14.   Strings;
  15.  
  16. Const
  17.   cSBTalkSig='FB ';
  18.  
  19. Type
  20.   tTalkEpStruc=record
  21.     Signature: array[0..2] of char;  {Signatur: "FB "}
  22.     MajorVers: byte;                 {Hauptversion ??}
  23.     Entry: pointer;                  {Treiber Einsprungadresse}
  24.     Unknown: array[0..23] of byte;   {Weiß nicht was da drin steht...}
  25.     DataLen: byte;                   {Länge des zu sprechenden Strings}
  26.     TalkStr: array[0..255] of char;  {Zu sprechender String}
  27.   end;
  28.   pTalkEpStruc=^tTalkEpStruc;
  29.  
  30. Var
  31.   sbt: pTalkEpStruc;
  32.   eing: string;
  33.  
  34.  
  35. Function ChkSBT: pointer; assembler;
  36. asm
  37.   mov ax,$FBFB
  38.   mov bx,0
  39.   mov es,bx
  40.   int $2F
  41.   mov dx,es
  42.   mov ax,bx
  43. end;
  44.  
  45. Procedure TalkIt(var sb: pTalkEpStruc; what: string);
  46. Var
  47.   SBCall: pointer;
  48. begin
  49.   sb^.DataLen:=Length(what);
  50.   StrPCopy(sb^.TalkStr,what);
  51.   SBCall:=sb^.Entry;
  52.   asm
  53.     les di,sb
  54.     mov bx,di
  55.     mov al,$07
  56.     call [sbcall]
  57.   end;
  58. end;
  59.  
  60.  
  61.  
  62. begin
  63.   sbt:=ChkSBT;
  64.   ClrScr;
  65.   Writeln('SBTalker - Test');
  66.   Writeln('16.2.94 von Mirko Holzer');
  67.   Writeln;
  68.   If sbt^.Signature<>cSBTalkSig then
  69.   begin
  70.     Writeln('The program sbtalk.exe is not installed.');
  71.     Writeln('Programm beendet.');
  72.     Writeln;
  73.     Halt;
  74.   end;
  75.   TalkIt(sbt,'Hello, here is S B talker speaking... Please enter your string '+
  76.              'or press enter to stop the program.');
  77.   Writeln('Zu sprechenden String eingeben oder <ENTER> drücken für Ende.');
  78.   Repeat
  79.     eing:='';
  80.     Readln(eing);
  81.     TalkIt(sbt,eing);
  82.   Until eing='';
  83.   TalkIt(sbt,'Look out for Demos from.... Terrible Minds Productions');
  84.   Writeln;
  85. end.
  86.  
  87.  
  88.